/**
 * 保洁管理API接口
 * 
 * 严格按照《App端编码规范权威标准声明.md》API调用规范实现：
 * - 方法名一致性：确保API调用方法名与API文件定义一致
 * - 参数格式正确：严格按照API接口要求传递参数
 * - 类型检查：使用JSDoc进行类型检查
 * - 接口文档：保持API文档与实际实现的一致性
 * - 错误处理：统一的错误处理机制
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */

import request from '@/api/request'

// ========================= 保洁区域管理 =========================

/**
 * 分页查询保洁区域
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页大小
 * @param {string} [params.areaName] - 区域名称
 * @param {string} [params.areaType] - 区域类型
 * @param {number} [params.status] - 状态
 * @returns {Promise<Object>} 分页结果
 */
export const getCleaningAreaPage = (params) => {
  return request.get('/api/work/cleaning/area/list', params)
}

/**
 * 获取保洁区域详情
 * @param {number} id - 区域ID
 * @returns {Promise<Object>} 区域详情
 */
export const getCleaningAreaById = (id) => {
  return request.get(`/api/work/cleaning/area/${id}`)
}

/**
 * 创建保洁区域
 * @param {Object} data - 区域信息
 * @returns {Promise<Object>} 创建结果
 */
export const createCleaningArea = (data) => {
  return request.post('/api/work/cleaning/area', data)
}

/**
 * 更新保洁区域
 * @param {Object} data - 区域信息
 * @returns {Promise<Object>} 更新结果
 */
export const updateCleaningArea = (data) => {
  return request.put('/api/work/cleaning/area', data)
}

/**
 * 删除保洁区域
 * @param {number} id - 区域ID
 * @returns {Promise<Object>} 删除结果
 */
export const deleteCleaningArea = (id) => {
  return request.delete(`/api/work/cleaning/area/${id}`)
}

// ========================= 保洁任务管理 =========================

/**
 * 分页查询保洁任务
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页大小
 * @param {number} [params.areaId] - 区域ID
 * @param {number} [params.assignedUserId] - 分配用户ID
 * @param {string} [params.taskType] - 任务类型
 * @param {number} [params.priority] - 优先级
 * @param {number} [params.status] - 状态
 * @param {string} [params.scheduledDate] - 计划日期
 * @returns {Promise<Object>} 分页结果
 */
export const getCleaningTaskPage = (params) => {
  return request.get('/api/work/cleaning/task/list', params)
}

/**
 * 查询用户保洁任务
 * @param {number} userId - 用户ID
 * @param {string} [startDate] - 开始日期
 * @param {string} [endDate] - 结束日期
 * @returns {Promise<Object>} 任务列表
 */
export const getCleaningTaskByUserId = (userId, startDate, endDate) => {
  return request.get(`/api/work/cleaning/task/user/${userId}`, { startDate, endDate })
}

/**
 * 创建保洁任务
 * @param {Object} data - 任务信息
 * @returns {Promise<Object>} 创建结果
 */
export const createCleaningTask = (data) => {
  return request.post('/api/work/cleaning/task', data)
}

/**
 * 更新保洁任务
 * @param {Object} data - 任务信息
 * @returns {Promise<Object>} 更新结果
 */
export const updateCleaningTask = (data) => {
  return request.put('/api/work/cleaning/task', data)
}

/**
 * 分配保洁任务
 * @param {number} taskId - 任务ID
 * @param {number} userId - 用户ID
 * @returns {Promise<Object>} 分配结果
 */
export const assignCleaningTask = (taskId, userId) => {
  return request.put(`/api/work/cleaning/task/${taskId}/assign`, { userId })
}

/**
 * 删除保洁任务
 * @param {number} id - 任务ID
 * @returns {Promise<Object>} 删除结果
 */
export const deleteCleaningTask = (id) => {
  return request.delete(`/api/work/cleaning/task/${id}`)
}

/**
 * 获取保洁任务详情
 * @param {number} id - 任务ID
 * @returns {Promise<Object>} 任务详情
 */
export const getCleaningTaskDetail = (id) => {
  return request.get(`/api/work/cleaning/task/${id}`)
}

/**
 * 获取保洁任务详细信息（包含执行记录）
 * @param {number} id - 任务ID
 * @returns {Promise<Object>} 任务详细信息
 */
export const getCleaningTaskDetailInfo = (id) => {
  return request.get(`/api/work/cleaning/task/${id}/detail`)
}

/**
 * 开始执行保洁任务
 * @param {Object} data - 任务执行数据
 * @param {number} data.taskId - 任务ID
 * @param {Array} data.beforePhotos - 清洁前照片
 * @param {string} [data.toolsUsed] - 使用工具
 * @param {string} [data.remark] - 备注信息
 * @returns {Promise<Object>} 执行结果
 */
export const startCleaningTask = (data) => {
  return request.post('/api/work/cleaning/task/start', data)
}

/**
 * 完成保洁任务
 * @param {Object} data - 任务完成数据
 * @param {number} data.taskId - 任务ID
 * @param {Array} data.beforePhotos - 清洁前照片
 * @param {Array} data.afterPhotos - 清洁后照片
 * @param {string} [data.toolsUsed] - 使用工具
 * @param {string} [data.remark] - 备注信息
 * @returns {Promise<Object>} 完成结果
 */
export const completeCleaningTask = (data) => {
  return request.post('/api/work/cleaning/task/complete', data)
}

// ========================= 保洁记录管理 =========================

/**
 * 分页查询保洁记录
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页大小
 * @param {number} [params.taskId] - 任务ID
 * @param {number} [params.userId] - 用户ID
 * @param {number} [params.status] - 状态
 * @param {string} [params.startDate] - 开始日期
 * @param {string} [params.endDate] - 结束日期
 * @returns {Promise<Object>} 分页结果
 */
export const getCleaningRecordPage = (params) => {
  return request.get('/api/work/cleaning/record/list', params)
}

/**
 * 查询用户保洁记录
 * @param {number} userId - 用户ID
 * @param {string} [startDate] - 开始日期
 * @param {string} [endDate] - 结束日期
 * @returns {Promise<Object>} 记录列表
 */
export const getCleaningRecordByUserId = (userId, startDate, endDate) => {
  return request.get(`/api/work/cleaning/record/user/${userId}`, { startDate, endDate })
}

/**
 * 提交保洁记录
 * @param {Object} data - 记录信息
 * @returns {Promise<Object>} 提交结果
 */
export const submitCleaningRecord = (data) => {
  return request.post('/api/work/cleaning/record', data)
}

/**
 * 验收保洁记录
 * @param {number} recordId - 记录ID
 * @param {number} score - 评分
 * @param {string} [remark] - 验收备注
 * @returns {Promise<Object>} 验收结果
 */
export const approveCleaningRecord = (recordId, score, remark) => {
  return request.put(`/api/work/cleaning/record/${recordId}/approve`, { score, remark })
}

/**
 * 更新保洁记录
 * @param {Object} data - 记录信息
 * @returns {Promise<Object>} 更新结果
 */
export const updateCleaningRecord = (data) => {
  return request.put('/api/work/cleaning/record', data)
}

/**
 * 删除保洁记录
 * @param {number} id - 记录ID
 * @returns {Promise<Object>} 删除结果
 */
export const deleteCleaningRecord = (id) => {
  return request.delete(`/api/work/cleaning/record/${id}`)
}

// ========================= 统计查询 =========================

/**
 * 获取保洁统计信息
 * @param {string} [startDate] - 开始日期
 * @param {string} [endDate] - 结束日期
 * @returns {Promise<Object>} 统计信息
 */
export const getCleaningStatistics = (startDate, endDate) => {
  return request.get('/api/work/cleaning/statistics', { startDate, endDate })
}

/**
 * 获取用户保洁统计
 * @param {number} userId - 用户ID
 * @param {string} [startDate] - 开始日期
 * @param {string} [endDate] - 结束日期
 * @returns {Promise<Object>} 用户统计信息
 */
export const getUserCleaningStatistics = (userId, startDate, endDate) => {
  return request.get(`/api/work/cleaning/statistics/user/${userId}`, { startDate, endDate })
}
